﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.IO;
using Domain;
using Controller;

namespace Ecommerce
{
    public partial class NovoUsuario : Form
    {
        private List<Endereco> enderecos = new List<Endereco>();

        public NovoUsuario()
        {
        InitializeComponent();
        

        dataGridView1.DataSource = this.enderecos;
       
    
        }

        private Boolean validaFormulario()
        {
            if (textBox1.Text.Equals(""))
            {
            MessageBox.Show("O campo Nome não está preenchido");
            textBox1.Focus();
            return false;
            }
            if (maskedTextBox1.Text.Trim().Length < 14)
            {
            MessageBox.Show("O campo CPF não está preenchido");
            maskedTextBox1.Focus();
            return false;
            }

            if (maskedTextBox3.Text.Trim().Length < 13)
            {
            MessageBox.Show("O campo RG não está preenchido");
            maskedTextBox3.Focus();
            return false;
            }


            if (maskedTextBox5.Text.Trim().Equals(""))
            {
            MessageBox.Show("O campo SENHA não está preenchido");
            maskedTextBox5.Focus();
            return false;
            }

            if (textBox2.Text.Equals(""))
            {
            MessageBox.Show("O campo EMAIL não está preenchido");
            textBox2.Focus();
            return false;
            }

            if (maskedTextBox4.Text.Trim().Length < 13)
            {
            MessageBox.Show("O campo TELEFONE não está preenchido");
            maskedTextBox4.Focus();
            return false;
            }

            if (maskedTextBox2.Text.Trim().Length < 13)
            {
            MessageBox.Show("O campo CELULAR não está preenchido");
            maskedTextBox2.Focus();
            return false;
            }

            if (this.enderecos.Count < 1)
            {
            MessageBox.Show("Adicione no minimo um endereço");
            dataGridView1.Focus();
            return false;
            }

            if (textBox4.Text.Equals(""))
            {
            MessageBox.Show("O campo ENDEREÇO não está preenchido");
            textBox4.Focus();
            return false;
            }

            if (textBox5.Text.Equals(""))
            {
            MessageBox.Show("O campo Nº não está preenchido");
            textBox5.Focus();
            return false;
            }

            if (textBox6.Text.Equals(""))
            {
            MessageBox.Show("O campo Complemento não está preenchido");
            textBox6.Focus();
            return false;
            }

            if (maskedTextBox6.Text.Trim().Length < 9)
            {
            MessageBox.Show("O campo CEP não está preenchido");
            textBox6.Focus();
            return false;
            }
            return true;
        }

        private Cliente ClienteCadastrado()
        {
            if (validaFormulario()) 
            {
            Cliente c = new Cliente();
            c.Nome = textBox1.Text;
            c.Cpf = maskedTextBox1.Text;
            c.Rg = maskedTextBox3.Text;
            c.Usuario = textBox3.Text;
            c.Senha = maskedTextBox5.Text;
            c.Telefone = maskedTextBox4.Text;
            c.Celular = maskedTextBox2.Text;
            c.Email = textBox2.Text;
            c.Foto = (Bitmap)pictureBox1.Image;
            c.Endereco = Endereco.ValidaEndereco(this.enderecos);
            return c;
            }
            return null;
        }

        private void NovoUsuario_Load(object sender, EventArgs e)
        {
           
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void groupBox4_Enter(object sender, EventArgs e)
        {

        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {

        }

        private void groupBox5_Enter(object sender, EventArgs e)
        {

        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK) 
            {
            string nomeArquivo = openFileDialog1.FileName;
            Bitmap bmp = new Bitmap(nomeArquivo);
            pictureBox1.Image = bmp;
            MemoryStream ms = new MemoryStream();
            bmp.Save(ms, ImageFormat.Bmp);
            byte[] foto = ms.ToArray();
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Cliente clienteRecuperadoDB = new Cliente();
            clienteRecuperadoDB = ClienteCadastrado();
            ClienteController cc = new ClienteController();
            cc.cadastrarCliente(clienteRecuperadoDB);

            clienteRecuperadoDB.Id_cliente = cc.login(clienteRecuperadoDB.Usuario, clienteRecuperadoDB.Senha).Id_cliente ;
            EnderecoController ec = new EnderecoController();
            ec.cadastrarEndereco(clienteRecuperadoDB);

            
            
        }

        private void button4_Click(object sender, EventArgs e)
        {
            Endereco endereco = new Endereco();
            endereco.Numero = Convert.ToInt32(textBox5.Text);
            endereco.Referencia = richTextBox1.Text;
            endereco.ENdereco = textBox4.Text;
            endereco.Complemento = textBox6.Text;
            endereco.Cep = maskedTextBox6.Text;

            if (this.enderecos.Count < 1)
            {
                this.enderecos.Add(endereco);
                dataGridView1.DataSource = Utils.ConvertListToDataTable<Endereco>(this.enderecos);
                dataGridView1.Refresh();
            }
            else 
            {
                for (int i = 0; i < this.enderecos.Count;i++ )
                {
                    if (this.enderecos[i].ENdereco != endereco.ENdereco && this.enderecos[i].Numero != endereco.Numero)
                    {
                        this.enderecos.Add(endereco);
                        dataGridView1.DataSource = Utils.ConvertListToDataTable<Endereco>(this.enderecos);
                        dataGridView1.Refresh();
                    }
                }
            }

         
        }

        private void groupBox5_Enter_1(object sender, EventArgs e)
        {

        }

        private void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
        {

        }
    }
}
